-
Notifications
You must be signed in to change notification settings - Fork 6.1k
8358592: Assert in Assembler::ptest due to missing SSE42 support #26151
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
Setting "-XX:UseSSE=1" in command line prevents the code from entering the block which causes UseSSE42Intrinsics to not be correctly set.
👋 Welcome back hgqxjj! A progress list of the required criteria for merging this PR into |
❗ This change is not yet ready to be integrated. |
Webrevs
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The fix looks reasonable to me but I'm not an expert in this code.
* @requires vm.debug | ||
* @requires os.arch == "x86_64" | ||
* @library /test/lib | ||
* @run main/othervm Test8358592 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this test should go to /hotspot/jtreg/compiler/arguments/
and have a more descriptive name (we generally try not use bug numbers for tests anymore).
|
||
public class Test8358592 { | ||
public static void main(String[] args) throws Exception { | ||
ProcessBuilder pb = ProcessTools.createTestJavaProcessBuilder( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Instead of spawning a new process, you can just pass the arguments via @run main/othervm
, see for example test/hotspot/jtreg/compiler/arguments/TestC1Globals.java
.
@@ -1491,6 +1491,8 @@ void VM_Version::get_processor_features() { | |||
} | |||
FLAG_SET_DEFAULT(UseSSE42Intrinsics, false); | |||
} | |||
}else{ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
}else{ | |
} else { |
@@ -1643,6 +1645,8 @@ void VM_Version::get_processor_features() { | |||
} | |||
FLAG_SET_DEFAULT(UseSSE42Intrinsics, false); | |||
} | |||
}else{ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
}else{ | |
} else { |
hi @TobiHartmann , Thanks a lot for the detailed review, i already update PR and please taking another look when you have time . |
Setting "-XX:UseSSE=1" in command line prevents the code from entering the block shown below, which causes UseSSE42Intrinsics to not be correctly set. Because supports_sse3() return false.




in addition , setting "-XX:+UseSSE42Intrinsics" in command line set UseVectorizedMismatchIntrinsic to True shown below.
The above code causes the ptest instruction to be invoked.
The assertion "assert(VM_Version::supports_sse4_1() || VM_Version::supports_avx(), "")" in ptest was triggered and caused the crash because of the following reason:
Setting "-XX:UseSSE=1" in command line cause "CPU_SSE4_1" was cleared and cause "VM_Version::supports_sse4_1()" return false ,related code as below:
Setting "-XX:UseSSE=1" in command line cause "UseAVX=0" and cause "VM_Version::supports_avx()" return false ,related code as below:
all of these above cause this issue.
i fix this issue by correcting UseSSE42Intrinsics to false when "UseSSE" in command line was set to 1, so that UseVectorizedMismatchIntrinsic will be set false and ptest was not triggered.
Progress
Issue
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/26151/head:pull/26151
$ git checkout pull/26151
Update a local copy of the PR:
$ git checkout pull/26151
$ git pull https://git.openjdk.org/jdk.git pull/26151/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 26151
View PR using the GUI difftool:
$ git pr show -t 26151
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/26151.diff
Using Webrev
Link to Webrev Comment